]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
overviewControls: Make AppDisplay rise from the bottom
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Wed, 20 Jan 2021 22:25:13 +0000 (19:25 -0300)
committerMarge Bot <marge-bot@gnome.org>
Thu, 11 Feb 2021 15:50:31 +0000 (15:50 +0000)
It makes more sense in a spatial overview that the app grid
comes and goes to somewhere in the screen, instead of fading
in and out into the void.

Make the app grid rise from the bottom of the screen.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1624>

js/ui/overviewControls.js

index e640564a5631adb50b10b2604566f6357f81058b..efb3fd9fbf739b7f35aae09f6e12c29e3846d712 100644 (file)
@@ -69,6 +69,31 @@ class ControlsManagerLayout extends Clutter.BoxLayout {
         return workspaceBox;
     }
 
+    _getAppDisplayBoxForState(state, box, searchHeight, dashHeight, appGridBox) {
+        const [width, height] = box.get_size();
+        const appDisplayBox = new Clutter.ActorBox();
+        const { spacing } = this;
+
+        switch (state) {
+        case ControlsState.HIDDEN:
+        case ControlsState.WINDOW_PICKER:
+            appDisplayBox.set_origin(0, box.y2);
+            break;
+        case ControlsState.APP_GRID:
+            appDisplayBox.set_origin(0,
+                searchHeight + spacing + appGridBox.get_height());
+            break;
+        }
+
+        appDisplayBox.set_size(width,
+            height -
+            searchHeight - spacing -
+            appGridBox.get_height() - spacing -
+            dashHeight);
+
+        return appDisplayBox;
+    }
+
     vfunc_set_container(container) {
         this._container = container;
         this.hookup_style(container);
@@ -112,7 +137,7 @@ class ControlsManagerLayout extends Clutter.BoxLayout {
         }
 
         // Workspaces
-        const params = [box, searchHeight, dashHeight, thumbnailsHeight];
+        let params = [box, searchHeight, dashHeight, thumbnailsHeight];
         const transitionParams = this._stateAdjustment.getStateTransitionParams();
 
         let workspacesBox;
@@ -133,14 +158,20 @@ class ControlsManagerLayout extends Clutter.BoxLayout {
         const workspaceAppGridBox =
             this._getWorkspacesBoxForState(ControlsState.APP_GRID, ...params);
 
-        childBox.set_origin(0, searchHeight + spacing + workspaceAppGridBox.get_height());
-        childBox.set_size(width,
-            height -
-            searchHeight - spacing -
-            workspaceAppGridBox.get_height() - spacing -
-            dashHeight);
+        params = [box, searchHeight, dashHeight, workspaceAppGridBox];
+        let appDisplayBox;
+        if (!transitionParams.transitioning) {
+            appDisplayBox =
+                this._getAppDisplayBoxForState(transitionParams.currentState, ...params);
+        } else {
+            const initialBox =
+                this._getAppDisplayBoxForState(transitionParams.initialState, ...params);
+            const finalBox =
+                this._getAppDisplayBoxForState(transitionParams.finalState, ...params);
 
-        this._appDisplay.allocate(childBox);
+            appDisplayBox = initialBox.interpolate(finalBox, transitionParams.progress);
+        }
+        this._appDisplay.allocate(appDisplayBox);
 
         // ViewSelector
         childBox.set_origin(0, searchHeight + spacing);